主机中毒处理思路建议
实践概述
云平台被攻击,导致物理机或云主机中毒的情况。严重了影响业务的稳定和数据的安全性。而且中毒之后,中毒节点会作为毒源,在整个环境全面扩散,善后修复工作非常复杂,需要耗费大量的杀毒查杀工作,而且查杀不彻底还需要重装系统。给IT运维工作带来了严峻的挑战。
病毒预防
- 取消公网映射:云平台直接以公网呈现在互联网上,极其容易被攻击,建议取消公网IP映射。
- 物理网络防护:物理网络对内对外的关键出入口侧需配置防火墙设备,并且配置有效的安全防护策略。
- 网络隔离防护:
- 管理网络和业务网络隔离,管理网络和业务网络分别对应了两个维度,一是底层云平台管控的物理机,二是上层业务运行的业务云主机。
- 上层业务云主机因为持续对外提供服务,存在较大的安全风险。
- 在做好业务网络防护的同时,做好管理网络和业务网络的隔离,可以避免任一网络中毒对另外一个网络的中毒传播和扩散。
强密码策略:
- 云平台登录密码、云平台数据库密码、各物理机系统密码、云主机系统密码,在运维过程中常见因为弱密码导致的系统中毒。
建议配置字母、数字、特殊字符等混合组成的不具备特定意义的字符串。
注意:在Linux可以执行< /dev/urandom tr -dc 0-9-A-Z-a-z-/|head -c \${1:-16};获得16位的随机密码。
云平台认证加固:
- 云平台UI配置https证书、云平台的随机码登录、云平台的多因子认证、登录密码策略、UI界面访问的IP黑白地址名单控制。
- 这些均可加固平台Web侧加固访问。
管理节点数据库防护:云平台管理节点数据库可以通过使用下列命令来限制访问云平台数据库的IP,限定在管理节点上。
zstack-ctl mysql_restrict_connection --root-password zstack.mysql.password --include-root
业务云主机安全防护:采用ZStack Cloud云平台提供的VPC防火墙策略(南北向)、安全组策略(东西向)、网络防欺诈等功能,来加固业务系统的访问控制。
- 漏洞修复:ZStack Cloud云平台软件在持续发布持续迭代的过程中,会主动更新相关openssh、tomcat、mysql等相关组件的版本,以修复对应组件已发现的漏洞。
- 物理机端口限制:ZStack Cloud云平台提供了一键封禁底层设备访问物理主机端口的脚本,针对必要的端口访问配置白名单访问机制,仅对环境内的物理主机开放,平台环境外一律禁止,可以加固底层端口的访问控制。
- 安全合规调整:物理主机可以做安全等保等要求的合规性调整,例如禁用root,调整SSH访问策略等。
中毒体现
- 云平台上层业务云主机卡顿,不能正常对外提供服务。原本云主机业务正常工作,但是突然异常卡顿。
- 物理机的CPU负载近乎100%,所有的CPU均满载运行,实际业务云主机的CPU压力不大,但物理机负载已经运行满载,无空余资源处理中断和上下文的切换。
- 物理网络流量异常,物理机频繁对外发包,占用了大量的网络流量。
- 大量占用内存。
中毒处理实践
中毒后操作:当已知云主机中毒后,首先应将主机进行隔离,防止病毒进一步扩散。
病毒处理:以挖矿病毒举例,当物理机或者云主机中挖矿病毒,主要表现为CPU使用率极高,系统内的进程被停止等特征,比如病毒会停止CPU占用过高的进程来释放资源供病毒自身来使用。处理思路根据CPU利用率占用过高的进程来查找病毒的执行文件并删除。
- 通过top命令查询CPU占用极高的进程,病毒CPU使用率进本在1000~3000的使用率,通过top命令确认进程pid然后kill掉。
- 在步骤1中,正常情况下kill掉病毒进程后,病毒会自动拉起继续挖矿没有根除,需要找到病毒源文件将其删除,通过lsof -p $pid(病毒进程号)查找病毒进程打开使用的源文件将其删除,一般病毒文件都是‘.’(点)开头的隐藏文件,查找是需要用ls -a。
- 病毒进程,可能会伪装成/bin/xxx文件,通过ls /bin 对比正常主机bin目录下的文件。
- 使用md5sum查询病毒文件的md5值并在搜索引擎搜索,有概率能查询到病毒来源。
- 病毒自动拉起,一般是修改了crontab定时执行的配置文件,检查rc.local,crontab -l,/etc/cron.hourly/sync /etc/cron.daily/sync /etc/cron.monthly/sync /etc/cron.weekly/sync等配置文件是否被修改。
- 部分病毒可能设置了alias别名,可通过命令 alias来确认别名信息修改记录。
- 检查/root/.ssh/authorized_keys 文件内容是否有未知主机,病毒可能配置了免密操作。